--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RNS/__init__.py fa4d4c6716d4894aba8ebddbdeec6f8061ade577 (fa4d4c67) Text, 21.22 KB
T8b949e# Reticulum License
T8b949e#
T8b949e# Copyright (c) 2016-2025 Mark Qvist
T8b949e#
T8b949e# Permission is hereby granted, free of charge, to any person obtaining a copy
T8b949e# of this software and associated documentation files (the "Software"), to deal
T8b949e# in the Software without restriction, including without limitation the rights
T8b949e# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
T8b949e# copies of the Software, and to permit persons to whom the Software is
T8b949e# furnished to do so, subject to the following conditions:
T8b949e#
T8b949e# - The Software shall not be used in any kind of system which includes amongst
T8b949e# its functions the ability to purposefully do harm to human beings.
T8b949e#
T8b949e# - The Software shall not be used, directly or indirectly, in the creation of
T8b949e# an artificial intelligence, machine learning or language model training
T8b949e# dataset, including but not limited to any use that contributes to the
T8b949e# training or development of such a model or algorithm.
T8b949e#
T8b949e# - The above copyright notice and this permission notice shall be included in
T8b949e# all copies or substantial portions of the Software.
T8b949e#
T8b949e# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
T8b949e# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
T8b949e# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
T8b949e# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
T8b949e# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
T8b949e# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
T8b949e# SOFTWARE.
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72import T7ee787glob
Tff7b72import T7ee787time
Tff7b72import T7ee787datetime
Tff7b72import T7ee787random
Tff7b72import T7ee787threading
Tff7b72from T7ee787.T7ee787_version Tff7b72import Te6edf3__version__
Tff7b72from T7ee787.T7ee787Reticulum Tff7b72import Te6edf3Reticulum
Tff7b72from T7ee787.T7ee787Identity Tff7b72import Te6edf3Identity
Tff7b72from T7ee787.T7ee787Link Tff7b72import Te6edf3LinkTb4b4b4, Te6edf3RequestReceipt
Tff7b72from T7ee787.T7ee787Channel Tff7b72import Te6edf3MessageBase
Tff7b72from T7ee787.T7ee787Buffer Tff7b72import Te6edf3BufferTb4b4b4, Te6edf3RawChannelReaderTb4b4b4, Te6edf3RawChannelWriter
Tff7b72from T7ee787.T7ee787Transport Tff7b72import Te6edf3Transport
Tff7b72from T7ee787.T7ee787Discovery Tff7b72import Te6edf3InterfaceAnnouncer
Tff7b72from T7ee787.T7ee787Destination Tff7b72import Te6edf3Destination
Tff7b72from T7ee787.T7ee787Packet Tff7b72import Te6edf3Packet
Tff7b72from T7ee787.T7ee787Packet Tff7b72import Te6edf3PacketReceipt
Tff7b72from T7ee787.T7ee787Resolver Tff7b72import Te6edf3Resolver
Tff7b72from T7ee787.T7ee787Resource Tff7b72import Te6edf3ResourceTb4b4b4, Te6edf3ResourceAdvertisement
Tff7b72from T7ee787.T7ee787Cryptography Tff7b72import Te6edf3HKDF
Tff7b72from T7ee787.T7ee787Cryptography Tff7b72import Te6edf3Hashes
Te6edf3py_modules Tff7b72= Te6edf3globTff7b72.Td2a8ffglobTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/*.pyTa5d6ff"Tb4b4b4)
Te6edf3pyc_modules Tff7b72= Te6edf3globTff7b72.Td2a8ffglobTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/*.pycTa5d6ff"Tb4b4b4)
Te6edf3modules Tff7b72= Te6edf3py_modulesTff7b72+Te6edf3pyc_modules
Te6edf3__all__ Tff7b72= Tffa657listTb4b4b4(Tffa657setTb4b4b4(Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffbasenameTb4b4b4(Te6edf3fTb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.pycTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.pyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4) Tff7b72for Te6edf3f Tff7b72in Te6edf3modules Tff7b72if Tff7b72not Tb4b4b4(Te6edf3fTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff__init__.pyTa5d6ff"Tb4b4b4) Tff7b72or Te6edf3fTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff__init__.pycTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72import T7ee787importlibT7ee787.T7ee787util
Tff7b72if Te6edf3importlibTff7b72.Td2a8ffutilTff7b72.Td2a8fffind_specTb4b4b4(Ta5d6ff"Ta5d6ffcythonTa5d6ff"Tb4b4b4)Tb4b4b4: Tff7b72import T7ee787cythonTb4b4b4; Te6edf3compiled Tff7b72= Te6edf3cythonTff7b72.Td2a8ffcompiled
Tff7b72elseTb4b4b4: Te6edf3compiled Tff7b72= Tff7b72False
Te6edf3LOG_NONE Tff7b72= Tff7b72-T79c0ff1
Te6edf3LOG_CRITICAL Tff7b72= T79c0ff0
Te6edf3LOG_ERROR Tff7b72= T79c0ff1
Te6edf3LOG_WARNING Tff7b72= T79c0ff2
Te6edf3LOG_NOTICE Tff7b72= T79c0ff3
Te6edf3LOG_INFO Tff7b72= T79c0ff4
Te6edf3LOG_VERBOSE Tff7b72= T79c0ff5
Te6edf3LOG_DEBUG Tff7b72= T79c0ff6
Te6edf3LOG_PATHING Tff7b72= T79c0ff7
Te6edf3LOG_EXTREME Tff7b72= T79c0ff8
Te6edf3LOG_STDOUT Tff7b72= T79c0ff0x91
Te6edf3LOG_FILE Tff7b72= T79c0ff0x92
Te6edf3LOG_CALLBACK Tff7b72= T79c0ff0x93
Te6edf3LOG_MAXSIZE Tff7b72= T79c0ff5Tff7b72*T79c0ff1024Tff7b72*T79c0ff1024
Te6edf3loglevel Tff7b72= Te6edf3LOG_NOTICE
Te6edf3logfile Tff7b72= Tff7b72None
Te6edf3logdest Tff7b72= Te6edf3LOG_STDOUT
Te6edf3logcall Tff7b72= Tff7b72None
Te6edf3logtimestamps Tff7b72= Tff7b72True
Te6edf3logtimefmt Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffM:Ta5d6ff%Ta5d6ffSTa5d6ff"
Te6edf3logtimefmt_p Tff7b72= Ta5d6ff"Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffM:Ta5d6ff%Ta5d6ffS.Tffd700%fTa5d6ff"
Te6edf3compact_log_fmt Tff7b72= Tff7b72False
Te6edf3instance_random Tff7b72= Te6edf3randomTff7b72.Td2a8ffRandomTb4b4b4(Tb4b4b4)
Te6edf3instance_randomTff7b72.Td2a8ffseedTb4b4b4(Te6edf3osTff7b72.Td2a8ffurandomTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4)
Te6edf3_always_override_destination Tff7b72= Tff7b72False
Te6edf3logging_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffloglevelnameTb4b4b4(Te6edf3levelTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_CRITICALTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Critical]Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_ERRORTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Error] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_WARNINGTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Warning] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_NOTICETb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Notice] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_INFOTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Info] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_VERBOSETb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Verbose] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_DEBUGTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Debug] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_PATHINGTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Pathing] Ta5d6ff"
Tff7b72if Tb4b4b4(Te6edf3level Tff7b72== Te6edf3LOG_EXTREMETb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff[Extra] Ta5d6ff"
Tff7b72return Ta5d6ff"Ta5d6ffUnknownTa5d6ff"
Tff7b72def Td2a8ffversionTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3__version__
Tff7b72def Td2a8ffhost_osTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787.T7ee787vendorT7ee787.T7ee787platformutils Tff7b72import Te6edf3get_platform
Tff7b72return Te6edf3get_platformTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8fftimestamp_strTb4b4b4(Te6edf3time_sTb4b4b4)Tb4b4b4:
Te6edf3timestamp Tff7b72= Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3time_sTb4b4b4)
Tff7b72return Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3logtimefmtTb4b4b4, Te6edf3timestampTb4b4b4)
Tff7b72def Td2a8ffprecise_timestamp_strTb4b4b4(Te6edf3time_sTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3datetimeTff7b72.Td2a8ffdatetimeTff7b72.Td2a8ffnowTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3logtimefmt_pTb4b4b4)Tb4b4b4[Tb4b4b4:Tff7b72-T79c0ff3Tb4b4b4]
Tff7b72def Td2a8ffslTb4b4b4(Te6edf3levelTff7b72=T79c0ff3Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3loglevel Tff7b72>Tff7b72= Te6edf3level
Tff7b72def Td2a8fflogTb4b4b4(Te6edf3msgTb4b4b4, Te6edf3levelTff7b72=T79c0ff3Tb4b4b4, Te6edf3_override_destination Tff7b72= Tff7b72FalseTb4b4b4, Te6edf3ptTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3loglevel Tff7b72== Te6edf3LOG_NONETb4b4b4: Tff7b72return
Tff7b72global Te6edf3_always_override_destinationTb4b4b4, Te6edf3compact_log_fmt
Te6edf3msg Tff7b72= Tffa657strTb4b4b4(Te6edf3msgTb4b4b4)
Tff7b72if Te6edf3loglevel Tff7b72>Tff7b72= Te6edf3levelTb4b4b4:
Tff7b72if Te6edf3ptTb4b4b4: Te6edf3logstring Tff7b72= Ta5d6ff"Ta5d6ff[Ta5d6ff"Tff7b72+Te6edf3precise_timestamp_strTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff] Ta5d6ff"Tff7b72+Te6edf3loglevelnameTb4b4b4(Te6edf3levelTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3msg
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Te6edf3compact_log_fmtTb4b4b4: Te6edf3logstring Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ff[Ta5d6ff"Tff7b72+Te6edf3timestamp_strTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff] Ta5d6ff" Tff7b72if Te6edf3logtimestamps Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72+Te6edf3loglevelnameTb4b4b4(Te6edf3levelTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3msg
Tff7b72elseTb4b4b4: Te6edf3logstring Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ff[Ta5d6ff"Tff7b72+Te6edf3timestamp_strTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff] Ta5d6ff" Tff7b72if Te6edf3logtimestamps Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72+Te6edf3msg
Tff7b72with Te6edf3logging_lockTb4b4b4:
Tff7b72if Tb4b4b4(Te6edf3logdest Tff7b72== Te6edf3LOG_STDOUT Tff7b72or Te6edf3_always_override_destination Tff7b72or Te6edf3_override_destinationTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3threadingTff7b72.Td2a8ffmain_threadTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffis_aliveTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return
Tff7b72elseTb4b4b4:
Tff7b72tryTb4b4b4: Tffa657printTb4b4b4(Te6edf3logstringTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass
Tff7b72elif Tb4b4b4(Te6edf3logdest Tff7b72== Te6edf3LOG_FILE Tff7b72and Te6edf3logfile Tff7b72!= Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(Te6edf3logfileTb4b4b4, Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3fileTb4b4b4: Te6edf3fileTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3logstringTff7b72+Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffgetsizeTb4b4b4(Te6edf3logfileTb4b4b4) Tff7b72> Te6edf3LOG_MAXSIZETb4b4b4:
Te6edf3prevfile Tff7b72= Te6edf3logfileTff7b72+Ta5d6ff"Ta5d6ff.1Ta5d6ff"
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3prevfileTb4b4b4)Tb4b4b4: Te6edf3osTff7b72.Td2a8ffunlinkTb4b4b4(Te6edf3prevfileTb4b4b4)
Te6edf3osTff7b72.Td2a8ffrenameTb4b4b4(Te6edf3logfileTb4b4b4, Te6edf3prevfileTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3_always_override_destination Tff7b72= Tff7b72True
Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffException occurred while writing log message to log file: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3LOG_CRITICALTb4b4b4)
Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffDumping future log events to console!Ta5d6ff"Tb4b4b4, Te6edf3LOG_CRITICALTb4b4b4)
Te6edf3logTb4b4b4(Te6edf3msgTb4b4b4, Te6edf3levelTb4b4b4)
Tff7b72elif Te6edf3logdest Tff7b72== Te6edf3LOG_CALLBACKTb4b4b4:
Tff7b72tryTb4b4b4: Te6edf3logcallTb4b4b4(Te6edf3logstringTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3_always_override_destination Tff7b72= Tff7b72True
Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffException occurred while calling external log handler: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3LOG_CRITICALTb4b4b4)
Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffDumping future log events to console!Ta5d6ff"Tb4b4b4, Te6edf3LOG_CRITICALTb4b4b4)
Te6edf3logTb4b4b4(Te6edf3msgTb4b4b4, Te6edf3levelTb4b4b4)
Tff7b72def Td2a8ffrandTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3result Tff7b72= Te6edf3instance_randomTff7b72.Td2a8ffrandomTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3result
Tff7b72def Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4:
Tff7b72import T7ee787traceback
Te6edf3exception_info Tff7b72= Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3tracebackTff7b72.Td2a8ffTracebackExceptionTff7b72.Td2a8fffrom_exceptionTb4b4b4(Te6edf3eTb4b4b4)Tff7b72.Td2a8ffformatTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3logTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAn unhandled Tffd700{Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff exception occurred: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3LOG_ERRORTb4b4b4)
Te6edf3logTb4b4b4(Te6edf3exception_infoTb4b4b4, Te6edf3LOG_ERRORTb4b4b4)
Tff7b72def Td2a8ffhexrepTb4b4b4(Te6edf3dataTb4b4b4, Te6edf3delimitTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4: Tffa657iterTb4b4b4(Te6edf3dataTb4b4b4)
Tff7b72except Tf85149TypeErrorTb4b4b4: Te6edf3data Tff7b72= Tb4b4b4[Te6edf3dataTb4b4b4]
Te6edf3delimiter Tff7b72= Ta5d6ff"Ta5d6ff:Ta5d6ff"
Tff7b72if Tff7b72not Te6edf3delimitTb4b4b4: Te6edf3delimiter Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3hexrep Tff7b72= Te6edf3delimiterTff7b72.Td2a8ffjoinTb4b4b4(Ta5d6ff"Tffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3cTb4b4b4) Tff7b72for Te6edf3c Tff7b72in Te6edf3dataTb4b4b4)
Tff7b72return Te6edf3hexrep
Tff7b72def Td2a8ffprettyhexrepTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Te6edf3delimiter Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3hexrep Tff7b72= Ta5d6ff"Ta5d6ff<Ta5d6ff"Tff7b72+Te6edf3delimiterTff7b72.Td2a8ffjoinTb4b4b4(Ta5d6ff"Tffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3cTb4b4b4) Tff7b72for Te6edf3c Tff7b72in Te6edf3dataTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff>Ta5d6ff"
Tff7b72return Te6edf3hexrep
Tff7b72def Td2a8ffprettyspeedTb4b4b4(Te6edf3numTb4b4b4, Te6edf3suffixTff7b72=Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3prettysizeTb4b4b4(Te6edf3numTff7b72/T79c0ff8Tb4b4b4, Te6edf3suffixTff7b72=Te6edf3suffixTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffpsTa5d6ff"
Tff7b72def Td2a8ffprettysizeTb4b4b4(Te6edf3numTb4b4b4, Te6edf3suffixTff7b72=Ta5d6ff'Ta5d6ffBTa5d6ff'Tb4b4b4)Tb4b4b4:
Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffKTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffMTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffGTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffTTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffPTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffETa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffZTa5d6ff'Tb4b4b4]
Te6edf3last_unit Tff7b72= Ta5d6ff'Ta5d6ffYTa5d6ff'
Tff7b72if Te6edf3suffix Tff7b72== Ta5d6ff'Ta5d6ffbTa5d6ff'Tb4b4b4:
Te6edf3num Tff7b72*Tff7b72= T79c0ff8
Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffKTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffMTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffGTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffTTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffPTa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffETa5d6ff'Tb4b4b4,Ta5d6ff'Ta5d6ffZTa5d6ff'Tb4b4b4]
Te6edf3last_unit Tff7b72= Ta5d6ff'Ta5d6ffYTa5d6ff'
Tff7b72for Te6edf3unit Tff7b72in Te6edf3unitsTb4b4b4:
Tff7b72if Tffa657absTb4b4b4(Te6edf3numTb4b4b4) Tff7b72< T79c0ff1000.0Tb4b4b4:
Tff7b72if Te6edf3unit Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72return Ta5d6ff"Tffd700%.0fTa5d6ff Tffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3unitTb4b4b4, Te6edf3suffixTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6ff"Tffd700%.2fTa5d6ff Tffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3unitTb4b4b4, Te6edf3suffixTb4b4b4)
Te6edf3num Tff7b72/Tff7b72= T79c0ff1000.0
Tff7b72return Ta5d6ff"Tffd700%.2fTffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3last_unitTb4b4b4, Te6edf3suffixTb4b4b4)
Tff7b72def Td2a8ffprettyfrequencyTb4b4b4(Te6edf3hzTb4b4b4, Te6edf3suffixTff7b72=Ta5d6ff"Ta5d6ffHzTa5d6ff"Tb4b4b4, Te6edf3dTff7b72=T79c0ff2Tb4b4b4, Te6edf3lpfTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3hz Tff7b72== T79c0ff0Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff0 HzTa5d6ff"
Tff7b72if Tff7b72not Te6edf3lpfTb4b4b4: Te6edf3num Tff7b72= Te6edf3hzTff7b72*T79c0ff1e6
Tff7b72elseTb4b4b4: Te6edf3num Tff7b72= Te6edf3hz
Tff7b72if Tff7b72not Te6edf3lpfTb4b4b4: Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffµTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffKTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffMTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffGTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffTTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffPTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffETa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4]
Tff7b72elseTb4b4b4: Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffKTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffMTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffGTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffTTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffPTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffETa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4]
Te6edf3last_unit Tff7b72= Ta5d6ff"Ta5d6ffYTa5d6ff"
Tff7b72for Te6edf3unit Tff7b72in Te6edf3unitsTb4b4b4:
Tff7b72if Tffa657absTb4b4b4(Te6edf3numTb4b4b4) Tff7b72< T79c0ff1000.0Tb4b4b4:
Tff7b72if Te6edf3d Tff7b72== T79c0ff2Tb4b4b4: Tff7b72return Ta5d6ff"Tffd700%.2fTa5d6ff Tffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3unitTb4b4b4, Te6edf3suffixTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6ff"Tffd700%sTa5d6ff Tffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Tffa657strTb4b4b4(Tffa657roundTb4b4b4(Te6edf3numTb4b4b4,Te6edf3dTb4b4b4)Tb4b4b4)Tb4b4b4, Te6edf3unitTb4b4b4, Te6edf3suffixTb4b4b4)
Te6edf3num Tff7b72/Tff7b72= T79c0ff1000.0
Tff7b72return Ta5d6ff"Tffd700%.2fTffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3last_unitTb4b4b4, Te6edf3suffixTb4b4b4)
Tff7b72def Td2a8ffprettydistanceTb4b4b4(Te6edf3mTb4b4b4, Te6edf3suffixTff7b72=Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3num Tff7b72= Te6edf3mTff7b72*T79c0ff1e6
Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffµTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4]
Te6edf3last_unit Tff7b72= Ta5d6ff"Ta5d6ffKTa5d6ff"
Tff7b72for Te6edf3unit Tff7b72in Te6edf3unitsTb4b4b4:
Te6edf3divisor Tff7b72= T79c0ff1000.0
Tff7b72if Te6edf3unit Tff7b72== Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4: Te6edf3divisor Tff7b72= T79c0ff10
Tff7b72if Te6edf3unit Tff7b72== Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4: Te6edf3divisor Tff7b72= T79c0ff100
Tff7b72if Tffa657absTb4b4b4(Te6edf3numTb4b4b4) Tff7b72< Te6edf3divisorTb4b4b4: Tff7b72return Ta5d6ff"Tffd700%.2fTa5d6ff Tffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3unitTb4b4b4, Te6edf3suffixTb4b4b4)
Te6edf3num Tff7b72/Tff7b72= Te6edf3divisor
Tff7b72return Ta5d6ff"Tffd700%.2fTa5d6ff Tffd700%sTffd700%sTa5d6ff" Tff7b72% Tb4b4b4(Te6edf3numTb4b4b4, Te6edf3last_unitTb4b4b4, Te6edf3suffixTb4b4b4)
Tff7b72def Td2a8ffprettytimeTb4b4b4(Te6edf3timeTb4b4b4, Te6edf3verboseTff7b72=Tff7b72FalseTb4b4b4, Te6edf3compactTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3neg Tff7b72= Tff7b72False
Tff7b72if Te6edf3time Tff7b72< T79c0ff0Tb4b4b4:
Te6edf3time Tff7b72= Tffa657absTb4b4b4(Te6edf3timeTb4b4b4)
Te6edf3neg Tff7b72= Tff7b72True
Te6edf3days Tff7b72= Tffa657intTb4b4b4(Te6edf3time Tff7b72/Tff7b72/ Tb4b4b4(T79c0ff24 Tff7b72* T79c0ff3600Tb4b4b4)Tb4b4b4)
Te6edf3time Tff7b72= Te6edf3time Tff7b72% Tb4b4b4(T79c0ff24 Tff7b72* T79c0ff3600Tb4b4b4)
Te6edf3hours Tff7b72= Tffa657intTb4b4b4(Te6edf3time Tff7b72/Tff7b72/ T79c0ff3600Tb4b4b4)
Te6edf3time Tff7b72%Tff7b72= T79c0ff3600
Te6edf3minutes Tff7b72= Tffa657intTb4b4b4(Te6edf3time Tff7b72/Tff7b72/ T79c0ff60Tb4b4b4)
Te6edf3time Tff7b72%Tff7b72= T79c0ff60
Tff7b72if Te6edf3compactTb4b4b4: Te6edf3seconds Tff7b72= Tffa657intTb4b4b4(Te6edf3timeTb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3seconds Tff7b72= Tffa657roundTb4b4b4(Te6edf3timeTb4b4b4, T79c0ff2Tb4b4b4)
Te6edf3ss Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3seconds Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3sm Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3minutes Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3sh Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3hours Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3sd Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3days Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3displayed Tff7b72= T79c0ff0
Te6edf3components Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72if Te6edf3days Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3daysTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff dayTa5d6ff"Tff7b72+Te6edf3sd Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3daysTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffdTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3hours Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3hoursTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff hourTa5d6ff"Tff7b72+Te6edf3sh Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3hoursTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffhTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3minutes Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3minutesTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff minuteTa5d6ff"Tff7b72+Te6edf3sm Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3minutesTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3seconds Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3secondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff secondTa5d6ff"Tff7b72+Te6edf3ss Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3secondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Te6edf3i Tff7b72= T79c0ff0
Te6edf3tstr Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72for Te6edf3c Tff7b72in Te6edf3componentsTb4b4b4:
Te6edf3i Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3i Tff7b72== T79c0ff1Tb4b4b4: Tff7b72pass
Tff7b72elif Te6edf3i Tff7b72< Tffa657lenTb4b4b4(Te6edf3componentsTb4b4b4)Tb4b4b4: Te6edf3tstr Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"
Tff7b72elif Te6edf3i Tff7b72== Tffa657lenTb4b4b4(Te6edf3componentsTb4b4b4)Tb4b4b4: Te6edf3tstr Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff and Ta5d6ff"
Te6edf3tstr Tff7b72+Tff7b72= Te6edf3c
Tff7b72if Te6edf3tstr Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff0sTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Te6edf3negTb4b4b4: Tff7b72return Te6edf3tstr
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ff-Tffd700{Te6edf3tstrTffd700}Ta5d6ff"
Tff7b72def Td2a8ffprettyshorttimeTb4b4b4(Te6edf3timeTb4b4b4, Te6edf3verboseTff7b72=Tff7b72FalseTb4b4b4, Te6edf3compactTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3neg Tff7b72= Tff7b72False
Te6edf3time Tff7b72= Te6edf3timeTff7b72*T79c0ff1e6
Tff7b72if Te6edf3time Tff7b72< T79c0ff0Tb4b4b4:
Te6edf3time Tff7b72= Tffa657absTb4b4b4(Te6edf3timeTb4b4b4)
Te6edf3neg Tff7b72= Tff7b72True
Te6edf3seconds Tff7b72= Tffa657intTb4b4b4(Te6edf3time Tff7b72/Tff7b72/ T79c0ff1e6Tb4b4b4)Tb4b4b4; Te6edf3time Tff7b72%Tff7b72= T79c0ff1e6
Te6edf3milliseconds Tff7b72= Tffa657intTb4b4b4(Te6edf3time Tff7b72/Tff7b72/ T79c0ff1e3Tb4b4b4)Tb4b4b4; Te6edf3time Tff7b72%Tff7b72= T79c0ff1e3
Tff7b72if Te6edf3compactTb4b4b4: Te6edf3microseconds Tff7b72= Tffa657intTb4b4b4(Te6edf3timeTb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3microseconds Tff7b72= Tffa657roundTb4b4b4(Te6edf3timeTb4b4b4, T79c0ff2Tb4b4b4)
Te6edf3ss Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3seconds Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3sms Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3milliseconds Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3sus Tff7b72= Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3microseconds Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffsTa5d6ff"
Te6edf3displayed Tff7b72= T79c0ff0
Te6edf3components Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72if Te6edf3seconds Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3secondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff secondTa5d6ff"Tff7b72+Te6edf3ss Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3secondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3milliseconds Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3millisecondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff millisecondTa5d6ff"Tff7b72+Te6edf3sms Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3millisecondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffmsTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3microseconds Tff7b72> T79c0ff0 Tff7b72and Tb4b4b4(Tb4b4b4(Tff7b72not Te6edf3compactTb4b4b4) Tff7b72or Te6edf3displayed Tff7b72< T79c0ff2Tb4b4b4)Tb4b4b4:
Te6edf3componentsTff7b72.Td2a8ffappendTb4b4b4(Tffa657strTb4b4b4(Te6edf3microsecondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff microsecondTa5d6ff"Tff7b72+Te6edf3sus Tff7b72if Te6edf3verbose Tff7b72else Tffa657strTb4b4b4(Te6edf3microsecondsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffµsTa5d6ff"Tb4b4b4)
Te6edf3displayed Tff7b72+Tff7b72= T79c0ff1
Te6edf3i Tff7b72= T79c0ff0
Te6edf3tstr Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72for Te6edf3c Tff7b72in Te6edf3componentsTb4b4b4:
Te6edf3i Tff7b72+Tff7b72= T79c0ff1
Tff7b72if Te6edf3i Tff7b72== T79c0ff1Tb4b4b4: Tff7b72pass
Tff7b72elif Te6edf3i Tff7b72< Tffa657lenTb4b4b4(Te6edf3componentsTb4b4b4)Tb4b4b4: Te6edf3tstr Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"
Tff7b72elif Te6edf3i Tff7b72== Tffa657lenTb4b4b4(Te6edf3componentsTb4b4b4)Tb4b4b4: Te6edf3tstr Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff and Ta5d6ff"
Te6edf3tstr Tff7b72+Tff7b72= Te6edf3c
Tff7b72if Te6edf3tstr Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff0usTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Te6edf3negTb4b4b4: Tff7b72return Te6edf3tstr
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ff-Tffd700{Te6edf3tstrTffd700}Ta5d6ff"
Tff7b72def Td2a8ffphyparamsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffRequired Physical Layer MTU : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3ReticulumTff7b72.Td2a8ffMTUTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff bytesTa5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffPlaintext Packet MDU : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3PacketTff7b72.Td2a8ffPLAIN_MDUTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff bytesTa5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffEncrypted Packet MDU : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3PacketTff7b72.Td2a8ffENCRYPTED_MDUTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff bytesTa5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffLink Curve : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3LinkTff7b72.Td2a8ffCURVETb4b4b4)Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffLink Packet MDU : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3LinkTff7b72.Td2a8ffMDUTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff bytesTa5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffLink Public Key Size : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3LinkTff7b72.Td2a8ffECPUBSIZETff7b72*T79c0ff8Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff bitsTa5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffLink Private Key Size : Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3LinkTff7b72.Td2a8ffKEYSIZETff7b72*T79c0ff8Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff bitsTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffpanicTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3osTff7b72.Td2a8ff_exitTb4b4b4(T79c0ff255Tb4b4b4)
Te6edf3exit_called Tff7b72= Tff7b72False
Tff7b72def Td2a8ffexitTb4b4b4(Te6edf3codeTff7b72=T79c0ff0Tb4b4b4)Tb4b4b4:
Tff7b72global Te6edf3exit_called
Tff7b72if Tff7b72not Te6edf3exit_calledTb4b4b4:
Te6edf3exit_called Tff7b72= Tff7b72True
Te6edf3ReticulumTff7b72.Td2a8ffexit_handlerTb4b4b4(Tb4b4b4)
Te6edf3osTff7b72.Td2a8ff_exitTb4b4b4(Te6edf3codeTb4b4b4)
Tff7b72def Td2a8ff_detach_stdoutTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3sysTff7b72.Td2a8ffstdout Tff7b72= Tffa657openTb4b4b4(Te6edf3osTff7b72.Td2a8ffdevnullTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4)
Te6edf3sysTff7b72.Td2a8ffstderr Tff7b72= Tffa657openTb4b4b4(Te6edf3osTff7b72.Td2a8ffdevnullTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4)
Tff7b72class T56d364ProfilerTb4b4b4:
Te6edf3_ran Tff7b72= Tff7b72False
Te6edf3profilers Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3tags Tff7b72= Tb4b4b4{Tb4b4b4}
Tf0883e@staticmethod
Tff7b72def Td2a8ffget_profilerTb4b4b4(Te6edf3tagTff7b72=Tff7b72NoneTb4b4b4, Te6edf3super_tagTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3tag Tff7b72in Te6edf3ProfilerTff7b72.Td2a8ffprofilersTb4b4b4: Tff7b72return Te6edf3ProfilerTff7b72.Td2a8ffprofilersTb4b4b4[Te6edf3tagTb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3profiler Tff7b72= Te6edf3ProfilerTb4b4b4(Te6edf3tagTb4b4b4, Te6edf3super_tagTb4b4b4)
Te6edf3ProfilerTff7b72.Td2a8ffprofilersTb4b4b4[Te6edf3tagTb4b4b4] Tff7b72= Te6edf3profiler
Tff7b72return Te6edf3profiler
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3tagTff7b72=Tff7b72NoneTb4b4b4, Te6edf3super_tagTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpaused Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffpause_time Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffpause_started Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftag Tff7b72= Te6edf3tag
Tff7b72selfTff7b72.Td2a8ffsuper_tag Tff7b72= Te6edf3super_tag
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsuper_tag Tff7b72in Te6edf3ProfilerTff7b72.Td2a8ffprofilersTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsuper_profiler Tff7b72= Te6edf3ProfilerTff7b72.Td2a8ffprofilersTb4b4b4[Tff7b72selfTff7b72.Td2a8ffsuper_tagTb4b4b4]
Tff7b72selfTff7b72.Td2a8ffpause_super Tff7b72= Tff7b72selfTff7b72.Td2a8ffsuper_profilerTff7b72.Td2a8ffpause
Tff7b72selfTff7b72.Td2a8ffresume_super Tff7b72= Tff7b72selfTff7b72.Td2a8ffsuper_profilerTff7b72.Td2a8ffresume
Tff7b72elseTb4b4b4:
Tff7b72def Td2a8ffnoopTb4b4b4(Tff7b72selfTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4: Tff7b72pass
Tff7b72selfTff7b72.Td2a8ffsuper_profiler Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffpause_super Tff7b72= Te6edf3noop
Tff7b72selfTff7b72.Td2a8ffresume_super Tff7b72= Te6edf3noop
Tff7b72def Tff7b72__enter__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpause_superTb4b4b4(Tb4b4b4)
Te6edf3tag Tff7b72= Tff7b72selfTff7b72.Td2a8fftag
Te6edf3super_tag Tff7b72= Tff7b72selfTff7b72.Td2a8ffsuper_tag
Te6edf3thread_ident Tff7b72= Te6edf3threadingTff7b72.Td2a8ffget_identTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3tag Tff7b72in Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4: Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4] Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4, Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4: Te6edf3super_tagTb4b4b4}
Tff7b72if Tff7b72not Te6edf3thread_ident Tff7b72in Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4] Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffcurrent_startTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4, Ta5d6ff"Ta5d6ffcapturesTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4}
Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcurrent_startTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3timeTff7b72.Td2a8ffperf_counterTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffresume_superTb4b4b4(Tb4b4b4)
Tff7b72def Tff7b72__exit__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3exc_typeTb4b4b4, Te6edf3exc_valueTb4b4b4, Te6edf3tracebackTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpause_superTb4b4b4(Tb4b4b4)
Te6edf3tag Tff7b72= Tff7b72selfTff7b72.Td2a8fftag
Te6edf3super_tag Tff7b72= Tff7b72selfTff7b72.Td2a8ffsuper_tag
Te6edf3end Tff7b72= Te6edf3timeTff7b72.Td2a8ffperf_counterTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72selfTff7b72.Td2a8ffpause_time
Tff7b72selfTff7b72.Td2a8ffpause_time Tff7b72= T79c0ff0
Te6edf3thread_ident Tff7b72= Te6edf3threadingTff7b72.Td2a8ffget_identTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3tag Tff7b72in Te6edf3ProfilerTff7b72.Td2a8fftags Tff7b72and Te6edf3thread_ident Tff7b72in Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72if Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcurrent_startTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3begin Tff7b72= Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcurrent_startTa5d6ff"Tb4b4b4]
Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcurrent_startTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcapturesTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffappendTb4b4b4(Te6edf3endTff7b72-Te6edf3beginTb4b4b4)
Tff7b72if Tff7b72not Te6edf3ProfilerTff7b72.Td2a8ff_ranTb4b4b4:
Te6edf3ProfilerTff7b72.Td2a8ff_ran Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffresume_superTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffpauseTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pause_startedTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffpausedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpaused Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffpause_started Tff7b72= Te6edf3pause_started Tff7b72or Te6edf3timeTff7b72.Td2a8ffperf_counterTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffpause_superTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpause_startedTb4b4b4)
Tff7b72def Td2a8ffresumeTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffpausedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpause_time Tff7b72+Tff7b72= Te6edf3timeTff7b72.Td2a8ffperf_counterTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72selfTff7b72.Td2a8ffpause_started
Tff7b72selfTff7b72.Td2a8ffpaused Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffresume_superTb4b4b4(Tb4b4b4)
Tf0883e@staticmethod
Tff7b72def Td2a8ffranTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3ProfilerTff7b72.Td2a8ff_ran
Tf0883e@staticmethod
Tff7b72def Td2a8ffresultsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787statistics Tff7b72import Te6edf3meanTb4b4b4, Te6edf3medianTb4b4b4, Te6edf3stdev
Te6edf3results Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72for Te6edf3tag Tff7b72in Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4:
Te6edf3tag_captures Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3tag_entry Tff7b72= Te6edf3ProfilerTff7b72.Td2a8fftagsTb4b4b4[Te6edf3tagTb4b4b4]
Tff7b72for Te6edf3thread_ident Tff7b72in Te6edf3tag_entryTb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3thread_entry Tff7b72= Te6edf3tag_entryTb4b4b4[Ta5d6ff"Ta5d6ffthreadsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3thread_identTb4b4b4]
Te6edf3thread_captures Tff7b72= Te6edf3thread_entryTb4b4b4[Ta5d6ff"Ta5d6ffcapturesTa5d6ff"Tb4b4b4]
Te6edf3sample_count Tff7b72= Tffa657lenTb4b4b4(Te6edf3thread_capturesTb4b4b4)
Tff7b72if Te6edf3sample_count Tff7b72> T79c0ff1Tb4b4b4:
Te6edf3thread_results Tff7b72= Tb4b4b4{ Ta5d6ff"Ta5d6ffcountTa5d6ff"Tb4b4b4: Te6edf3sample_countTb4b4b4,
Ta5d6ff"Ta5d6ffmeanTa5d6ff"Tb4b4b4: Te6edf3meanTb4b4b4(Te6edf3thread_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmedianTa5d6ff"Tb4b4b4: Te6edf3medianTb4b4b4(Te6edf3thread_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffstdevTa5d6ff"Tb4b4b4: Te6edf3stdevTb4b4b4(Te6edf3thread_capturesTb4b4b4) Tb4b4b4}
Tff7b72elif Te6edf3sample_count Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3thread_results Tff7b72= Tb4b4b4{ Ta5d6ff"Ta5d6ffcountTa5d6ff"Tb4b4b4: Te6edf3sample_countTb4b4b4,
Ta5d6ff"Ta5d6ffmeanTa5d6ff"Tb4b4b4: Te6edf3meanTb4b4b4(Te6edf3thread_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmedianTa5d6ff"Tb4b4b4: Te6edf3medianTb4b4b4(Te6edf3thread_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffstdevTa5d6ff"Tb4b4b4: Tff7b72None Tb4b4b4}
Te6edf3tag_capturesTff7b72.Td2a8ffextendTb4b4b4(Te6edf3thread_capturesTb4b4b4)
Te6edf3sample_count Tff7b72= Tffa657lenTb4b4b4(Te6edf3tag_capturesTb4b4b4)
Tff7b72if Te6edf3sample_count Tff7b72> T79c0ff1Tb4b4b4:
Te6edf3tag_results Tff7b72= Tb4b4b4{ Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3tagTb4b4b4,
Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4: Te6edf3tag_entryTb4b4b4[Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffcountTa5d6ff"Tb4b4b4: Tffa657lenTb4b4b4(Te6edf3tag_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmeanTa5d6ff"Tb4b4b4: Te6edf3meanTb4b4b4(Te6edf3tag_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmedianTa5d6ff"Tb4b4b4: Te6edf3medianTb4b4b4(Te6edf3tag_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffstdevTa5d6ff"Tb4b4b4: Te6edf3stdevTb4b4b4(Te6edf3tag_capturesTb4b4b4) Tb4b4b4}
Tff7b72elif Te6edf3sample_count Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3tag_results Tff7b72= Tb4b4b4{ Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3tagTb4b4b4,
Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4: Te6edf3tag_entryTb4b4b4[Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffcountTa5d6ff"Tb4b4b4: Tffa657lenTb4b4b4(Te6edf3tag_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmeanTa5d6ff"Tb4b4b4: Te6edf3meanTb4b4b4(Te6edf3tag_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffmedianTa5d6ff"Tb4b4b4: Te6edf3medianTb4b4b4(Te6edf3tag_capturesTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffstdevTa5d6ff"Tb4b4b4: Tff7b72None Tb4b4b4}
Te6edf3resultsTb4b4b4[Te6edf3tagTb4b4b4] Tff7b72= Te6edf3tag_results
Tff7b72def Td2a8ffprint_results_recursiveTb4b4b4(Te6edf3tagTb4b4b4, Te6edf3resultsTb4b4b4, Te6edf3levelTff7b72=T79c0ff0Tb4b4b4)Tb4b4b4:
Te6edf3print_tag_resultsTb4b4b4(Te6edf3tagTb4b4b4, Te6edf3levelTff7b72+T79c0ff1Tb4b4b4)
Tff7b72for Te6edf3tag_name Tff7b72in Te6edf3resultsTb4b4b4:
Te6edf3sub_tag Tff7b72= Te6edf3resultsTb4b4b4[Te6edf3tag_nameTb4b4b4]
Tff7b72if Te6edf3sub_tagTb4b4b4[Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3print_results_recursiveTb4b4b4(Te6edf3sub_tagTb4b4b4, Te6edf3resultsTb4b4b4, Te6edf3levelTff7b72=Te6edf3levelTff7b72+T79c0ff1Tb4b4b4)
Tff7b72def Td2a8ffprint_tag_resultsTb4b4b4(Te6edf3tagTb4b4b4, Te6edf3levelTb4b4b4)Tb4b4b4:
Te6edf3ind Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72*Te6edf3level
Te6edf3name Tff7b72= Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3count Tff7b72= Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffcountTa5d6ff"Tb4b4b4]
Te6edf3mean Tff7b72= Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffmeanTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3median Tff7b72= Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffmedianTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3stdev Tff7b72= Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffstdevTa5d6ff"Tb4b4b4]
Tffa657printTb4b4b4( Ta5d6fffTa5d6ff"Tffd700{Te6edf3indTffd700}Tffd700{Te6edf3nameTffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4( Ta5d6fffTa5d6ff"Tffd700{Te6edf3indTffd700}Ta5d6ff Samples : Tffd700{Te6edf3countTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72if Te6edf3stdev Tff7b72!= Tff7b72NoneTb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3indTffd700}Ta5d6ff Mean : Tffd700{Te6edf3prettyshorttimeTb4b4b4(Te6edf3meanTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3indTffd700}Ta5d6ff Median : Tffd700{Te6edf3prettyshorttimeTb4b4b4(Te6edf3medianTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3indTffd700}Ta5d6ff St.dev. : Tffd700{Te6edf3prettyshorttimeTb4b4b4(Te6edf3stdevTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4( Ta5d6fffTa5d6ff"Tffd700{Te6edf3indTffd700}Ta5d6ff Total : Tffd700{Te6edf3prettyshorttimeTb4b4b4(Te6edf3meanTff7b72*Te6edf3countTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ffProfiler results:Tffea00\nTa5d6ff"Tb4b4b4)
Tff7b72for Te6edf3tag_name Tff7b72in Te6edf3resultsTb4b4b4:
Te6edf3tag Tff7b72= Te6edf3resultsTb4b4b4[Te6edf3tag_nameTb4b4b4]
Tff7b72if Te6edf3tagTb4b4b4[Ta5d6ff"Ta5d6ffsuperTa5d6ff"Tb4b4b4] Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3print_results_recursiveTb4b4b4(Te6edf3tagTb4b4b4, Te6edf3resultsTb4b4b4)
Te6edf3profile Tff7b72= Te6edf3ProfilerTff7b72.Td2a8ffget_profiler
T8b949e# The base-256 table is likely to change. Currently, it is just
T8b949e# experimental, so don't count on it too much just yet.
Te6edf3b256 Tff7b72= Tb4b4b4[
T8b949e# 0 1 2 3 4 5 6 7 8 9 A B C D F F
Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffdTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffeTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6fffTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffgTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffhTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffiTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffjTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffkTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6fflTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffnTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffoTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4, T8b949e# 0x0 Latin & numerals
Ta5d6ff"Ta5d6ffqTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffrTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6fftTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffuTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffvTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffyTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffzTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffæTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6fføTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff2Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff3Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff4Ta5d6ff"Tb4b4b4, T8b949e# 0x1 Latin & numerals
Ta5d6ff"Ta5d6ffATa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffCTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffDTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffETa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffFTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffGTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffHTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffITa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffJTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffKTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffLTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffMTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffNTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffOTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffPTa5d6ff"Tb4b4b4, T8b949e# 0x2 Latin & numerals
Ta5d6ff"Ta5d6ffQTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffRTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffSTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffTTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffUTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffWTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffXTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffYTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffÆTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffØTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff5Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff6Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff7Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff8Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff9Ta5d6ff"Tb4b4b4, T8b949e# 0x3 Latin & numerals
Ta5d6ff"Ta5d6ffαTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffβTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffγTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffδTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffεTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffζTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffηTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffθTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffιTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffκTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffλTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffμTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffνTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffξTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffπTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffρTa5d6ff"Tb4b4b4, T8b949e# 0x4 Greek
Ta5d6ff"Ta5d6ffσTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffτTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffφTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffχTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffψTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffωTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΓTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΔTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΘTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΛTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΞTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΠTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΣTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΦTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΨTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffΩTa5d6ff"Tb4b4b4, T8b949e# 0x5 Greek
Ta5d6ff"Ta5d6ffБTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffДTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЖTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЗTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffИTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЛTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffПTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЦTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЧTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffШTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЩTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЪTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЫTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЭTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЮTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffЯTa5d6ff"Tb4b4b4, T8b949e# 0x6 Cyrillic
Ta5d6ff"Ta5d6ffбTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffдTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffжTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffзTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffиTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffлTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffпTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffцTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffчTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffшTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffщTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffъTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffыTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffэTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffюTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffяTa5d6ff"Tb4b4b4, T8b949e# 0x7 Cyrillic
Ta5d6ff"Ta5d6ffԱTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԲTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԳTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԴTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԵTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԶTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԷTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԸTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԹTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԺTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԻTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԽTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԾTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffԿTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՀTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՁTa5d6ff"Tb4b4b4, T8b949e# 0x8 Armenian Capitals
Ta5d6ff"Ta5d6ffՂTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՃTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՄTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՅTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՆTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՇTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՈTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՉTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՊTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՋTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՎTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՐTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՑTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՒTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՔTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffՖTa5d6ff"Tb4b4b4, T8b949e# 0x9 Armenian Captials
Ta5d6ff"Ta5d6ffᚠTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᚢTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᚦTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᚱTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᚹTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᚺTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᚾTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛈTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛇTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛉTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛊTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛏTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛒTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛖTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛗTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᛟTa5d6ff"Tb4b4b4, T8b949e# 0xA Elder Futhark
Ta5d6ff"Ta5d6ffイTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffウTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffオTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffカTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffキTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffケTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffサTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffシTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffスTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffセTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffタTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffチTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffテTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffトTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffナTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffヌTa5d6ff"Tb4b4b4, T8b949e# 0xB Katakana
Ta5d6ff"Ta5d6ffネTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffヒTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffフTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffヘTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffホTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffマTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffミTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffムTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffメTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffモTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffヤTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffラTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffリTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffルTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffレTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffワTa5d6ff"Tb4b4b4, T8b949e# 0xC Katakana
Ta5d6ff"Ta5d6ff𐑐Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑑Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑒Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑔Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑕Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑗Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑙Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑳Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑶Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑸Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑹Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑺Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑻Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑽Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑾Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐑿Ta5d6ff"Tb4b4b4, T8b949e# 0xD Shavian
Ta5d6ff"Ta5d6ff᱑Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff᱕Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff᱘Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff᱙Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱚTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱝTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱟTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱣTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱦTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱨTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱬTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱭTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱰTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱳTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱶTa5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ffᱷTa5d6ff"Tb4b4b4, T8b949e# 0xE Ol Chiki
Ta5d6ff"Ta5d6ff𐌳Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐌸Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐌾Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐀Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐁Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐂Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐆Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐇Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐈Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐉Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐊Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐋Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐌Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐍Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐎Ta5d6ff"Tb4b4b4,Ta5d6ff"Ta5d6ff𐐏Ta5d6ff"Tb4b4b4, T8b949e# 0xF Gothic & Deseret
Tb4b4b4]
Tff7b72def Td2a8ffb256repTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3bytes_to_b256Tb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ffprettyb256repTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4: Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ff<Tffd700{Te6edf3b256repTb4b4b4(Te6edf3dataTb4b4b4)Tffd700}Ta5d6ff>Ta5d6ff"
Tff7b72def Td2a8ffb256_to_byteTb4b4b4(Te6edf3pointTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657typeTb4b4b4(Te6edf3pointTb4b4b4) Tff7b72== Tffa657str Tff7b72or Tff7b72not Tffa657lenTb4b4b4(Te6edf3pointTb4b4b4) Tff7b72== T79c0ff1Tb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid input data for base256 byte decodeTa5d6ff"Tb4b4b4)
Tff7b72tryTb4b4b4: Tff7b72return Te6edf3b256Tff7b72.Td2a8ffindexTb4b4b4(Te6edf3pointTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCould not decode base256 byte: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffb256_to_bytesTb4b4b4(Te6edf3b256repTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657typeTb4b4b4(Te6edf3b256repTb4b4b4) Tff7b72== Tffa657strTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid input data for base256 decodeTa5d6ff"Tb4b4b4)
Tff7b72tryTb4b4b4: Tff7b72return Tffa657bytesTb4b4b4(Tb4b4b4[Te6edf3b256Tff7b72.Td2a8ffindexTb4b4b4(Te6edf3cTb4b4b4) Tff7b72for Te6edf3c Tff7b72in Te6edf3b256repTb4b4b4]Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCould not decode base256: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffbyte_to_b256Tb4b4b4(Te6edf3input_byteTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657typeTb4b4b4(Te6edf3input_byteTb4b4b4) Tff7b72== Tffa657bytes Tff7b72and Tff7b72not Tffa657lenTb4b4b4(Te6edf3input_byteTb4b4b4) Tff7b72== T79c0ff1Tb4b4b4: Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid input data for base256 byte encodeTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657typeTb4b4b4(Te6edf3input_byteTb4b4b4) Tff7b72== Tffa657bytes Tff7b72and Tffa657lenTb4b4b4(Te6edf3input_byteTb4b4b4) Tff7b72== T79c0ff1Tb4b4b4: Te6edf3input_byte Tff7b72= Tffa657ordTb4b4b4(Te6edf3input_byteTb4b4b4)
Tff7b72if Tff7b72not Tffa657typeTb4b4b4(Te6edf3input_byteTb4b4b4) Tff7b72== Tffa657intTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid input data for base256 byte encodeTa5d6ff"Tb4b4b4)
Tff7b72tryTb4b4b4: Tff7b72return Te6edf3b256Tb4b4b4[Tffa657intTb4b4b4(Te6edf3input_byteTb4b4b4)Tb4b4b4]
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCould not encode byte to base256: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffbytes_to_b256Tb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657typeTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72== Tffa657bytesTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid input data for base256 encodeTa5d6ff"Tb4b4b4)
Tff7b72tryTb4b4b4: Tff7b72return Tb4b4b4[Te6edf3byte_to_b256Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72for Te6edf3c Tff7b72in Te6edf3dataTb4b4b4]
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCould not encode to base256: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────